home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1997 April
/
EnigmA AMIGA RUN 17 (1997)(G.R. Edizioni)(IT)[!][issue 1997-04][EAR-CD].iso
/
EARCD
/
comm
/
thor
/
thor24arexx.lha
/
FSE
/
Style.fse
< prev
next >
Wrap
Text File
|
1996-11-11
|
3KB
|
107 lines
/* Style.fse by Troels Walsted Hansen
** $VER: Style.fse v2.00ß (30.11.94)
**
** Purpose: Apply style to word.
**
** History:
** Style.fse v2.00ß (30.11.94)
** · rewritten completely
** · determines whether word contains illegal characters
** · works as a toggle - run once to place one set of stylechars,
** run again to remove them
** · doesn't handle characters at the left or right of a word correctly :(
** e.g. '>>hello,' becomes '*>>hello,*' instead of '>>*hello*,'
*/
options results
parse arg portname stylechar
address(portname)
XPOS
cur = result
GETLINE
line = result
/* If the current character is non-alphabetic, then start one character
** over to the left. This allows the cursor to be immediately after
** the key word (say on a space or bracket.)
*/
/* find word */
totalwnumber = words(line)
if(totalwnumber < 1) then call QuitWithError('There''s no text on this line.')
do i=1 to totalwnumber
if(cur < wordindex(line, i)) then break
end
/* some useful variables for later on */
styleword = word(line, i-1)
wordnumber = i-1
wordlength = length(styleword)
wordstart = wordindex(line, wordnumber)
/* determine whether some other character than `: ; . , ! ) ( " ? >'
** has been placed at the beginning or end of the line
*/
leftchar = left(styleword, 1)
rightchar = right(styleword, 1)
if(translate(leftchar, '..................................................................................', '*/_#:;.,!)("?>qwertyuiopasdfghjklzxcvbnmøæåQWERTYUIOPASDFGHJKLZXCVBNMØÆÅ1234567890') ~= '.') then
call QuitWithError('Leftmost character is illegal.')
if(translate(rightchar, '..................................................................................', '*/_#:;.,!)("?>qwertyuiopasdfghjklzxcvbnmøæåQWERTYUIOPASDFGHJKLZXCVBNMØÆÅ1234567890') ~= '.') then
call QuitWithError('Rightmost character is illegal.')
/* if the current stylechars are already in place, remove them and exit */
if(leftchar = stylechar & rightchar = stylechar & wordlength > 2) then
do
SETPOS X wordstart
INSERTINPUT '7F'x
SETPOS X wordstart+wordlength-2
INSERTINPUT '7F'x
exit
end
/* if other stylechars then the current ones are present, ignore them */
if(leftchar = '*' | leftchar = '/' | leftchar = '_' | leftchar = '#' & leftchar = rightchar) then
fixedstyleword = strip(styleword, B, '*/_#')
else
fixedstyleword = styleword
translated = translate(fixedstyleword, '......................................................................................................', '->!:;@.,"()[]?''\®©þ¡ßð×¹²³¢¼½¾ÞУÇç¿qwertyuiopasdfghjklzxcvbnmøæåQWERTYUIOPASDFGHJKLZXCVBNMØÆÅ1234567890')
dotword = ''
do length(fixedstyleword)
dotword = dotword || '.'
end
if(translated ~= dotword) then call QuitWithError('Word contain(s) illegal character(s).')
/* place stylechars */
SETPOS X wordstart
INSERTSTRING strip(stylechar)
SETPOS X wordstart+wordlength+1
INSERTSTRING strip(stylechar)
SETPOS wordstart+wordlength+2
exit
QuitWithError:
parse arg errorstring
REQUESTNOTIFY TEXT '"'errorstring'"' BT '"_Ok"'
exit
end